import Vue from 'vue'
import VueRouter from 'vue-router'
import routes from './routes'

Vue.use(VueRouter)

const router = new VueRouter({
  mode: 'history',
  routes
})

router.afterEach((to) => {
  if (to.meta.title) {
    // document.title = '远昌-' + to.meta.title
    document.title = to.meta.title
  }
})

router.beforeEach((to, from, next) => {
  next()
})
// 以下代码防止路由调用重复报错--NavigationDuplicated错误解决
// 先保存router原型对象的push
const origin = VueRouter.prototype.push
// 第一个参数：告诉push方法往哪里跳转，并传递哪些参数
VueRouter.prototype.push = function(location, resolve, reject) {
  if (resolve && reject) {
    // js中的每个函数都有call和apply方法，唯一区别就是call传参用逗号隔开，apply使用数组，相同点都可以调用函数一次
    origin.call(this, location, resolve, reject)
  } else {
    origin.call(this, location, () => {}, () => {})
  }
}
VueRouter.prototype.replace = function(location, resolve, reject) {
  if (resolve && reject) {
    // js中的每个函数都有call和apply方法，唯一区别就是call传参用逗号隔开，apply使用数组，相同点都可以调用函数一次
    origin.call(this, location, resolve, reject)
  } else {
    origin.call(this, location, () => {}, () => {})
  }
}

export default router

